from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import datetime
from PyCmpltrtok.common import sep, rand_name_on_now, check_np_detailed, get_dir_name_ext
import numpy as np
import os

XDIR, XNAME, XEXT = get_dir_name_ext(os.path.abspath(__file__))
XSAVE_DIR = os.path.join(XDIR, '_save', XNAME)
os.makedirs(XSAVE_DIR, exist_ok=True)

texts = [
    '在2000年，周杰伦发行了他的首张专辑《Jay》，从属于唱片公司阿尔发音乐，从此以后，他的音乐遍及亚洲，尤其在台湾、中国大陆、马来西亚、香港、新加坡、印度尼西亚、韩国、日本和西方国家—例如美国和澳大利亚的亚裔社群中。并被广泛认为是华语乐坛历史上最伟大以及最具影响力的音乐人之一。',
    'ModelScope旨在打造下一代开源的模型即服务共享平台，为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品，让模型应用更简单！',
    '我们希望在汇集行业领先的预训练模型，减少开发者的重复研发成本，提供更加绿色环保、开源开放的AI开发环境和模型服务，助力绿色“数字经济”事业的建设。 ModelScope平台将以开源的方式提供多类优质模型，开发者可在平台上免费体验与下载使用。',
    '若您也和我们有相同的初衷，欢迎关注我们，我们鼓励并支持个人或企业开发者与我们联系，平台将为您构建更好的支持服务，共同为泛AI社区做出贡献。',
]
texts = [
    '在2000年，周杰伦发行了他的首张专辑《Jay》',
    'ModelScope旨在打造下一代开源的模型即服务共享平台，为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品！',
    '我们希望在汇集行业领先的预训练模型，减少开发者的重复研发成本',
    '若您也和我们有相同的初衷，欢迎关注我们',
]
model_id = 'damo/speech_sambert-hifigan_tts_zh-cn_16k'
sambert_hifigan_tts = pipeline(task=Tasks.text_to_speech, model=model_id)
durations = []
for i in range(5):
    sep(i)
    dt1 = datetime.datetime.now()
    outputs = sambert_hifigan_tts(input=texts, voice='zhitian_emo')
    dt2 = datetime.datetime.now()
    duration = dt2 - dt1
    durations.append(duration.microseconds)
    print(dt1, dt2, duration)
    for j, o in enumerate(outputs):
        wav = o[OutputKeys.OUTPUT_WAV]
        path = os.path.join(XSAVE_DIR, f'output.{rand_name_on_now()}.{i}-{j}.wav')
        print(path)
        with open(path, 'wb') as f:
            f.write(wav)

dur = np.array(durations, dtype=np.float32)
check_np_detailed(dur, 'durations')
